package com.gov.ec.rsv.igm;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.faces.event.ActionEvent;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import org.primefaces.event.SelectEvent;


import com.gov.ec.rsv.interfaces.ICrudDao;
import com.gov.ec.rsv.modelo.Auditoria;
import com.gov.ec.rsv.modelo.Institucion;
import com.gov.ec.rsv.util.FacesUtil;
//import com.gov.ec.rsv.util.Mensaje;
import com.gov.ec.rsv.util.PrimeFaceUtil;


public class InstitucionBean extends FacesUtil{

	//Objetos Permisos
	private Boolean perEditar;
	private Boolean perGuardar;
	private Boolean perEliminar;
	
	// Objetos para eliminar y actulizar

	 /** La variable Cliente. */
    private Institucion institucion;
	private List<Institucion> listaInstitucion;
    private Institucion InstitucionSel;
    private Auditoria auditoria;
	
    @EJB(name = "adminCrud/local")
	private ICrudDao adminCrud;

	/**
	 * @throws NamingException 
	 */
	public InstitucionBean() throws NamingException  {
		this.institucion = new Institucion();
		InitialContext ic = new InitialContext();
		adminCrud= (ICrudDao) ic.lookup("RSVCCIGM/adminCrud/local");
	}

	public void cargarInstitucion() {
		listaInstitucion = new ArrayList<Institucion>();
//		List<Object> institutoTmp = adminCrud.consultarTodo(institucion);
		List<Object> institutoTmp = adminCrud.consultaGeneral("from Institucion");
		for (Object instTmp : institutoTmp) {
			listaInstitucion.add((Institucion) instTmp);
//			listaInstitucion.add(new Institucion());
		}
	}
	
	/**
	 * Permite guardar o actulizar un objeto Institucion
	 * 
	 * @return a la misma pagina del formulario Institucion
	 * @throws Exception 
	 * @autor 
	 */
	public void guardarInstitucion() throws Exception {
		//Mensaje mensaje = new Mensaje();
		if (institucion.getIdInstitucion() > 0) {
			//mensaje = (Mensaje)
					adminCrud.actualizar(institucion);
		} else {
			//mensaje = (Mensaje) 
					adminCrud.insertar(institucion);
		}

		super.addSuccessMessage(super.getRecursoGeneral().getString("msgEditar")+" "+this.institucion.getNombre());
		setInstitucion(new Institucion());
	}

	/**
	 * Permite eliminar un objeto tecnico
	 * @param event
	 * @autor 
	 */
	public void eliminarInstitucion(ActionEvent event) {
		//Mensaje mensaje = null;
		if (getInstitucionSel() != null) {
			//Integer idTec = getClienteSel().getIdCliente().getIdTec();
			try{
//			mensaje = (Mensaje) 
					adminCrud.eliminar(this.InstitucionSel);
			}catch(Exception e){
				//mensaje = new Mensaje(Mensaje.ERROR, Recursos.getString("mensajeViolacionConstraint"));
			}
//			FacesContext.getCurrentInstance().addMessage(
//					null,
//					new FacesMessage(ConvertidorMensajes.mensajeFaces(mensaje
//							.getTipoMensaje()), mensaje.getMensaje(),
//					"Mensaje:"));
		} else {
//			mensaje = new Mensaje(Mensaje.ERROR,
//					Recursos.getString("seleccione un item"));
//			FacesContext.getCurrentInstance().addMessage(
//					null,
//					new FacesMessage(ConvertidorMensajes.mensajeFaces(mensaje
//							.getTipoMensaje()), mensaje.getMensaje(),
//					"Mensaje:"));
		}
	}

	/**
	 * Permite actualizar un objeto cliente
	 * @autor 
	 */
	public void editarInstitucion() {
	//	Mensaje mensaje = null;
		if (getInstitucionSel() != null) {
			//super.addSuccessMessage("Cliente cargado "+this.institucion.getNombre());
//			FacesContext.getCurrentInstance().addMessage(
//					null,
//					new FacesMessage(FacesMessage.SEVERITY_INFO, "Tecnico "
//							+ getCliente().getNombre() + " cargado",
//					"Mensaje:"));
			PrimeFaceUtil.saltarTabAcordeon("form:acoPanTec", 0);
		} else {
//			mensaje = new Mensaje(Mensaje.ERROR,
//					Recursos.getString("seleccione un item"));
			
			//super.addSuccessMessage(super.getRecursoGeneral().getString("msgEditar")+" "+this.institucion.getNombre());
//			FacesContext.getCurrentInstance().addMessage(
//					null,
//					new FacesMessage(ConvertidorMensajes.mensajeFaces(mensaje
//							.getTipoMensaje()), mensaje.getMensaje(),
//					"Mensaje:"));
		}

	}

	public void onRowSelect(SelectEvent event) {
		setInstitucion((Institucion) event.getObject());
	}

	public Boolean getPerEditar() {
		return perEditar;
	}

	public void setPerEditar(Boolean perEditar) {
		this.perEditar = perEditar;
	}

	public Boolean getPerGuardar() {
		return perGuardar;
	}

	public void setPerGuardar(Boolean perGuardar) {
		this.perGuardar = perGuardar;
	}

	public Boolean getPerEliminar() {
		return perEliminar;
	}

	public void setPerEliminar(Boolean perEliminar) {
		this.perEliminar = perEliminar;
	}

	public Institucion getInstitucion() {
		return institucion;
	}

	public void setInstitucion(Institucion institucion) {
		this.institucion = institucion;
	}

	
	public Institucion getInstitucionSel() {
		return InstitucionSel;
	}

	public void setInstitucionSel(Institucion institucionSel) {
		InstitucionSel = institucionSel;
	}

	public Auditoria getAuditoria() {
		return auditoria;
	}

	public void setAuditoria(Auditoria auditoria) {
		this.auditoria = auditoria;
	}

	public List<Institucion> getListaInstitucion() {
		cargarInstitucion();
		return listaInstitucion;
	}

	public void setListaInstitucion(List<Institucion> listaInstitucion) {
		this.listaInstitucion = listaInstitucion;
	}

	}
